﻿<?php
class Admin extends CI_Controller
{
	protected $_permissionsArray = array(
				'admin' => 'admin',
				'news' => 'news',
				'announcements' => 'announcements',
				'activities' => 'activities',
				'staff' => 'staff',
				'all' => 'all'
				);
	
	public function __construct()
	{
		parent::__construct();
	}

	######################################################
	#			Дел за најава и одјава					 #
	######################################################

	//Индекс функцијата ја повикува функцијата за најава (login)
	public function index()
	{
		if(!$this->session->userdata('user'))
			$this->login();
		else
			redirect('admin/main');
	}

	//Функција за најава - прикажува страна за најава
	public function login()
	{
		$this->load->helper('form');

		$data['title'] = 'ФИНКИ - Страна за најава';
		$data['include'] = 'admin/login';

		$this->load->view('masterPage', $data);
	}

	//Функција која го автентицира корисничкото име и лозинката
	//на корисникот, внесени преку login страната
	public function authenticate()
	{
		$this->load->library('form_validation');
		$this->load->model('users_model');
		$this->load->model('roles_model');

		$this->form_validation->set_rules('username', 'username', 'required|xss_clean');
		$this->form_validation->set_rules('password', 'password', 'required|xss_clean');

		if($this->input->post("login"))
		{
			if ($this->form_validation->run() == TRUE)
			{
				$username = $this->input->post('username', TRUE);
				$password = $this->input->post('password', TRUE);

				if(($user = $this->users_model->getBy(array('users.username'=>$username, 'users.password'=>$password))) != null)
				{
					$role = $this->roles_model->getBy(array('idRlsPk'=>$user->role));
					$this->session->set_userdata('user',$user);
					
					//За дозвола за пристап
					$this->session->set_userdata('role',$role->access);
					redirect('admin/main','refresh');
				}else{
					redirect('admin/login','refresh');
				}
			}
			redirect('admin/login','refresh');
		}
		redirect('admin/login','refresh');
	}

	//Функција за проверка дали корисникот е најавен.
	//Доколку не е, пренасочува кон страната за најава
	//Доколку е, но нема дозвола за пристап на одредена страна, се пренасочува на соодветна страна,
	//дадена преку влезниот аргумент $redir.
	//Доколу се е валидно, функцијата ги враќа корисничките информации
	public function userCheck($permissionLevel,$redir){
		$user = $this->session->userdata('user');
		
		if(!$user)
			redirect('admin/login','refresh');
		$access = explode(",",$this->session->userdata('role'));
		if(in_array($permissionLevel, $access)==false)
			redirect($redir);
		
		return $user;
	}

	//Функција која ја прикажува главната администраторска страна
	//од која потоа се навигира кон другите
	public function main(){
		$user = $this->userCheck('staff','admin/main');

		$data['title'] = 'ФИНКИ - Администратор - Вести';
		$data['include']="admin/adminContent";
		$data['content'] = 'admin/welcome';
		$data['navbar'] = 'admin/main';

		$this->load->view('masterPage', $data);
	}

	//Функција за одјава - ја брише сесиската променлива user
	//и пренасочува кон login страната
	public function logout(){

		if($this->session->userdata('user'))
		{
			$this->session->unset_userdata('user');
			redirect('admin/login');
		}
		else
		{
			redirect('admin/login');
		}
	}
	
	//Функција за прикачување на слики и pdf датотеки
	//За користење на линкови при креирање на вести, активности и тн.
	public function fileUpload(){
		$user = $this->userCheck('news','admin/main');
		
		$this->load->helper('directory');
		$this->load->helper('form');
		
		$data['title'] = 'ФИНКИ - Администратор - Датотеки';
		$data['include']="admin/adminContent";
		$data['content'] = 'admin/fileUpload';
		$data['navbar'] = 'admin/main';
		$data['imagesDir'] = directory_map('./uploads/images/misc/',1);
		$data['pdfDir'] = directory_map('./uploads/pdf/');
		
		$this->load->view('masterPage', $data);
	}
	
	//Помошни функција на fileUpload() за прикачување на слики
	public function addImage(){
		$user = $this->userCheck('news','admin/main');
		
		$this->load->model('upload_model');
		
		$this->upload_model->upload_image('misc',null,800,600,'imageFile');
		
		redirect('admin/fileUpload');
	}
	
	//Помошни функција на fileUpload() за прикачување на pdf
	public function addPDF(){
		$user = $this->userCheck('news','admin/main');
	
		$this->load->model('upload_model');
	
		$this->upload_model->upload_pdf('pdfFile');	
	
		redirect('admin/fileUpload');
	}
}
